﻿using System.Collections.Generic;

namespace JNPF.Utils
{
    /// <summary>
    /// 消息队列
    /// 版 本：V3.0.0
    /// 版 权：引迈信息技术有限公司（https://www.jnpfsoft.com）
    /// 作 者：JNPF开发平台组
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class QueueHelper<T> where T : class, new()
    {
        /// <summary>
        /// 实例化
        /// </summary>
        public static QueueHelper<T> Instance = new QueueHelper<T>();
        private Queue<T> queue = new Queue<T>();
        /// <summary>
        /// Enqueue
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public void Enqueue(T t)
        {
            lock (queue)
            {
                queue.Enqueue(t);
            }
        }
        /// <summary>
        /// Dequeue
        /// </summary>
        /// <returns></returns>
        public T Dequeue()
        {
            lock (queue)
            {
                if (queue.Count > 0)
                {
                    return queue.Dequeue();
                }
                else
                {
                    return null;
                }
            }
        }
    }
}
